package com.xxjh.brs.map.utils;

import java.time.Instant;
import java.util.concurrent.atomic.AtomicLong;

/**
 * @author CHENCHEN
 * @title a
 * @company 新兴际华科技（天津）有限公司
 * @create 2024-06-17 19:40
 */
public class TaskIdGenerator {

    private static final AtomicLong counter = new AtomicLong(0);

    /**
     * 生成任务ID（自增）
     * @return 任务ID
     */
    public static long generateTaskId() {
        // 获取当前时间戳（毫秒）
        long timestamp = Instant.now().toEpochMilli();
        // 使用AtomicLong确保并发安全下的自增
        long sequence = counter.getAndIncrement();
        // 此方法未充分使用Long的全部范围
        long taskId = (timestamp << 16) | sequence; // 序列号占16位，可根据需要调整
        return taskId;
    }
}
